#pragma once
#include "mathFunctionUtil.h"
#include <list>
#include <string>
#include <vector>

using namespace std;

class result {
public:
    enum resultType {
        DIVIDE_ZERO,
        RATIONAL,
        IRRATIONAL,
//        INFINITY,
//        MINUS_INFINITY,
//        IMAGINARY, // Un-Supported
    };
    
    result(void):value(0.0f), Type(RATIONAL){}
    
private:
    resultType Type;
    double value;   // BigInt... will support later.
};

class expression {
private:
	list<expression*> parameter;
    functionType funcType;      
public:
	expression(void);
};

class expressionBuilder
{
public:
	expressionBuilder(void);

	expression expressionBuild(std::string expr);
private:
};
